Cellular phones and networks employ speech codecs to reduce the data rate in order to make efficient use of the bandwidth resources in the radio interface. In a mobile-to-mobile call, the PCM (pulse code modulation) speech signal is first encoded into a lower-rate bit stream by the speech codec of mobile A, transmitted over the network, and then decoded back into a PCM signal in the speech codec of mobile B. Speech codecs are also used in Internet-based transmission in conjunction with IP (Internet Protocol) phones. As in cellular phones, the reduced data rate due to speech codecs allows for more throughput, that is, more telephone conversation, for a given transmission medium.
With the increased reliance on wireless communications, voice quality has become an important consideration in wireless systems. Various improvements have been made over the years to improve voice quality including, for example, improving the speech codecs used in the networks, using tandem free networks, and so on. Various signal processing techniques for enhancing voice quality are also well-known and pervasive throughout the networks, e.g., acoustic echo control, noise compensation, noise reduction, and automatic gain control. As is well known, these techniques typically use some form of noise estimation and subsequent gain adjustment/modification to improve the speech signal quality. However, conventional gain modification arrangements are limited in accuracy and effectiveness.
For example, FIG. 1 illustrates the effect of incrementing the fixed codebook gain in a conventional manner for an exemplary Global System for Mobile Communications (GSM) cellular system using Adaptive Multi-Rate (AMR) speech coders in the 12.2 kbps mode. As is well known, this speech coder models the excitation of a speech signal with a fixed codebook portion and a variable codebook portion. The fixed codebook portion is determined by the fixed codebook vector and the fixed codebook gain in an AMR codec. By incrementing the fixed codebook gain, the level/volume of the speech signal is correspondingly changed. For example, in the encoder, the fixed codebook gain is quantized using a quantization table consisting of, e.g., 31 values, and only the index (e.g., increment, step, etc.) into the quantization table is transmitted and provided to the decoder. In the decoder, the index is translated to obtain the fixed codebook gain value from the quantization table (look up table), so changing the index (e.g., increment, step) causes the corresponding change in the level/volume.
More specifically, FIGS. 1A and 1B show this corresponding relationship between actual (absolute) output levels and the changes (increments) to the fixed codebook gain index. For purposes of this illustration, the input signal to the AMR codec is white noise. FIG. 1A shows a plot of the actual output levels as a function of the increment of the fixed codebook gain index. FIG. 1B shows the sequential increment to output level as a function of the fixed codebook gain being incremented, i.e., from index 0 to index 1, from index 1 to index 2, and so on.
Referring to FIG. 1A, the output level at index 0 (i.e., when no increment is applied to the fixed codebook gain index), was measured to be approximately −39.8 dBm for the white noise signal (as shown by reference 201). When a constant increment of one (1) is applied to the fixed codebook table index for the entire duration of the signal, an output level of approximately −36.4 dBm was measured throughout the entire signal (as shown by reference 202 in FIG. 1A). As such, the difference (increment) in the output level between increment 0 and increment 1 is approximately 3.4 dB, as shown by reference 203 in FIG. 1B. When a constant increment of two (2) is applied to the fixed codebook gain index, an output level of approximately −33.0 dBm results (shown by reference 205 in FIG. 1A) and the further increment (difference between increment 1 and increment 2) is again approximately 3.4 dB as shown by reference 206 in FIG. 1B, and so on.
As shown for increments of approximately 10 or more (reference 211), a saturation effect occurs in that the calculated index may be frequently greater than the table length of 31, in which case it has to be limited to 31. Moreover, the output signal may be limited by other mechanisms in the decoder. Consequently, saturation occurs and the output increment becomes less than 3.4 dB as shown by reference 212.
The relationship between output levels and index increments in fixed codebook gain, as shown in FIGS. 1A and 1B, illustrate a significant disadvantage in modifying the fixed codebook gain in this manner. In particular, the adjustments made to the fixed codebook gain in an encoded signal are limited to “coarse” adjustments, at least in the unsaturated regime, resulting in “coarse” adjustment of the decoded output signal. Stated otherwise, increments (e.g. 1,2 3, and so on) of the fixed codebook gain index results in gain modifications of the output signal in multiples of 3.4 dB steps (e.g., 3.4 dB, 6.8 dB, 10.2 dB, and so on), which can result in under-compensating or over-compensating the gain of the modified output signal.